【年终巨献】云计算的前世今生1:从物理设备到云计算
小编点评:你真的了解云计算吗?小编可以拍胸脯保证,看文本篇年末巨献,你就能成为云计算行业老司机。
一、云计算概述
云计算主要解决了四个方面的内容:计算,网络,存储,应用。计算就是CPU和内存,例如“1+1”这个最简单的算法就是把“1”放在内存里面,然后CPU做加法,返回的结果“2”又保存在内存里面。网络就是你插根网线能上网。存储就是你下个电影有地方放。本次讨论就是围绕这四个部分来讲的。计算、网络、存储三个是IaaS层面,应用是PaaS层面。
二、云计算发展脉络
云计算整个发展过程,用一句来形容,就是“分久必合,合久必分”。
第一阶段:合,即物理设备
物理设备简介
在互联网发展初期,大家都爱用物理设备:
1. 服务器用物理机,像戴尔、惠普、IBM、联想等物理服务器,随着硬件设备的进步,物理服务器越来越强大了,64核128G内存都算是普通配置;
2. 网络用的是硬件交换机和路由器,例如思科的,华为的,从1GE到10GE,现在有40GE和100GE,带宽越来越牛;
3. 存储方面有的用普通的磁盘,也有了更快的SSD盘。容量从M到G,连笔记本电脑都能配置到T,更何况磁盘阵列;
物理设备的缺点
部署应用直接使用物理机,看起来很爽,有种土豪的感觉,却有大大的缺点:
1. 人工运维:如果你在一台服务器上安装软件,把系统安装坏了,怎么办?只有重装。当你想配置一下交换机的参数,需要串口连上去进行配置。当你想增加一块磁盘,要买一块插进服务器。这些都需要人工来,而且很大可能要求机房。你们公司在北五环,机房在南六环,这酸爽。
2. 浪费资源:其实你只想部署一个小小的网站,却要用128G的内存。混着部署吧,就有隔离性的问题。
3. 隔离性差:你把好多的应用部署在同一台物理机上,他们之间抢内存、抢CPU,一个写满了硬盘,另一个就没法用了,一个弄挂了内核,另一个也跟着挂了,如果部署两个相同的应用,端口还会冲突,动不动就会出错。
第二阶段:分,即虚拟化
虚拟化简介
因为物理设备的以上缺点,就有了第一次“合久必分”的过程,叫做虚拟化。所谓虚拟化,就是把实的变成虚的。
1. 物理机变为虚拟机:CPU是虚拟的,内存是虚拟的,内核是虚拟的,硬盘是虚拟的;
2. 物理交换机变为虚拟交换机:网卡是虚拟的,交换机是虚拟的,带宽也是虚拟的;
3. 物理存储变成虚拟存储:多块硬盘虚拟成一大块;
虚拟化解决的问题
虚拟化很好的解决了上面的三个问题:
1. 人工运维:虚拟机的创建和删除都可以远程操作,虚拟机被玩坏了,删了再建一个,分钟级别的。虚拟网络的配置也可以远程操作,创建网卡,分配带宽都是调用接口就能搞定的
2. 浪费资源:虚拟化了以后,资源可以分配的很小很小,比如1个CPU,1G内存,1M带宽,1G硬盘,都可以被虚拟出来
3. 隔离性差:每个虚拟机有独立的CPU, 内存,硬盘,网卡,不同虚拟机的应用互不干扰
虚拟化时代的生态
在虚拟化阶段,领跑者是VMware,可以实现基本的计算,网络,存储的虚拟化。
如同这个世界有闭源就有开源、有Windows就有Linux、有iOS就有Android一样,有VMware,就有Xen和KVM。在开源虚拟化方面,Citrix的Xen做的不错,后来Redhat在KVM发力不少。对于网络虚拟化,有Open vSwitch,可以通过命令创建网桥、网卡、设置VLAN、设置带宽。对于存储虚拟化,本地盘有LVM,可以将多个硬盘变成一大块盘,然后在里面切出一小块给用户。
虚拟化的缺点
但是虚拟化也有缺点。通过虚拟化软件创建虚拟机,需要人工指定放在哪台机器上、硬盘放在哪个存储设备上,网络的VLAN ID、带宽具体的配置等,都需要人工指定。所以仅使用虚拟化的运维工程师往往有一个Excel表格,记录有多少台物理机,每台机器部署了哪些虚拟机。受此限制,一般虚拟化的集群规模都不是特别大。
第三阶段:合,即云计算
云计算解决的问题
为了解决虚拟化阶段剩余的问题,于是有了分久必合的过程。这个过程我们可以形象的称为池化。虚拟化将资源分得很细,但是如此细分的资源靠Excel去管理,成本太高。池化就是将资源打成一个大的池,当需要资源的时候,帮助用户自动的选择,而非用户指定。这个阶段的关键点:调度器Scheduler。
私有云、公有云的两极分化
于是VMware有了自己的vCloud。于是有了基于Xen和KVM的私有云平台CloudStack,后来Citrix将其收购后开源。当这些私有云平台在用户的数据中心里面卖的其贵无比,赚的盆满钵满的时候,有其他的公司开始了另外的选择,这就是AWS和Google,他们开始了公有云领域的探索。
AWS最初就是基于Xen技术进行虚拟化的,并且最终形成了公有云平台。也许AWS最初只是不想让自己的电商领域的利润全部交给私有云厂商吧,所以自己的云平台首先支撑起了自己的业务。在这个过程中,AWS自己严肃的使用了自己的云计算平台,使得公有云平台不是对于资源的配置更加友好,而是对于应用的部署更加友好,最终大放异彩。
私有云厂商、公有云厂商的联系与区别
如果我们仔细观察就会发现,私有云和公有云使用的是类似的技术,却在产品设计上是完全不同的两种生物。私有云厂商和公有云厂商也拥有类似的技术,却在产品运营上呈现出完全不同的基因。
私有云厂商都是卖资源的,所以往往在卖私有云平台的时候往往伴随着卖计算、网络、存储设备。在产品设计上,私有云厂商往往强调又长又详尽,但是客户几乎不会使用的计算、网络、存储的技术参数,因为这些参数可以用来和友商对标的过程中占尽优势。私有云的厂商几乎没有自己的大规模应用,所以私有云厂商的平台做出来是给别人用的,自己不会大规模使用,于是产品往往围绕资源展开,而不会对应用的部署友好。
公有云的厂商往往都是有自己的大规模应用需要部署的,所以其产品的设计,可以将常见的应用部署所需要的模块作为组件提供出来,用户可以像拼积木一样,拼接一个适用于自己应用的架构。公有云厂商不必要关心各种技术参数的PK,不必关心是否开源,是否兼容各种虚拟化平台,兼容各种服务器设备、网络设备、存储设备。你管我用什么,客户部署应用方便就好。
公有云生态及老二的逆袭
当然公有云的第一名AWS活的很爽,第二名Rackspace就不太爽了。没错,互联网行业嘛,基本上就是一家独大。第二名如何逆袭呢?开源是很好的办法,让整个行业大家一起为这个云平台出力。兄弟们,大家一起上!于是Rackspace与美国航空航天局(NASA)合作创始了开源云平台OpenStack。OpenStack现在发展的和AWS有点像了,所以从OpenStack的模块组成,可以看到云计算池化的方法。
OpenStack的组件
1.计算池化模块Nova:OpenStack的计算虚拟化主要使用KVM,然而到底在那个物理机上开虚拟机呢,这要靠nova-scheduler;
2.网络池化模块Neutron:OpenStack的网络虚拟化主要使用Open vSwitch,然而对于每一个Open vSwitch的虚拟网络,虚拟网卡,VLAN,带宽的配置,不需要登录到集群上配置,Neutron可以通过SDN的方式进行配置;
3.存储池化模块Cinder: OpenStack的存储虚拟化,如果使用本地盘,则基于LVM,使用哪个LVM上分配的盘,也是用过scheduler来的。后来就有了将多台机器的硬盘打成一个池的方式Ceph,则调度的过程,则在Ceph层完成。
OpenStack带来私有云市场的红海
有了OpenStack,所有的私有云厂商都疯了,原来VMware在私有云市场实在赚的太多了,眼巴巴的看着,没有对应的平台可以和他抗衡。现在有了现成的框架,再加上自己的硬件设备,你可以想象到的所有的IT厂商的巨头,全部加入到社区里面来,将OpenStack开发为自己的产品,连同硬件设备一起,杀入私有云市场。
网易云的选择
网易云当然也没有错过这次风口,上线了自己的OpenStack集群,网易云基础服务基于OpenStack自主研发了IaaS服务,在计算虚拟化方面,通过裁剪KVM镜像,优化虚拟机启动流程等改进,实现了虚拟机的秒级别启动。在网络虚拟化方面,通过SDN和OpenvSwitch技术,实现了虚拟机之间的高性能互访。在存储虚拟化方面,通过优化Ceph存储,实现高性能云盘。
网易云使用OpenStack支撑起了自己的应用,这是互联网的思维。仅仅是资源层面弹性是不够的,还需要开发出对应用部署友好的组件。例如数据库,负载均衡,缓存等,这些都是应用部署必不可少的,也是网易云在大规模应用实践中,千锤百炼过的,这些组件称为PaaS。
(本文作者网易云首席解决方案架构师 刘超 )
未完待续,下一篇《云计算的前世今生2:容器的诞生》